// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SHILL_CELLULAR_MM1_MODEM_TIME_PROXY_INTERFACE_H_
#define SHILL_CELLULAR_MM1_MODEM_TIME_PROXY_INTERFACE_H_

#include <string>

#include "shill/callbacks.h"

namespace shill {
class Error;

namespace mm1 {

typedef base::Callback<void(const std::string &)>
    NetworkTimeChangedSignalCallback;

// These are the methods that an org.freedesktop.ModemManager1.Modem.Time
// proxy must support. The interface is provided so that it can be mocked
// in tests. All calls are made asynchronously. Call completion is signalled
// via callbacks passed to the methods.
class ModemTimeProxyInterface {
 public:
  virtual ~ModemTimeProxyInterface() {}

  virtual void GetNetworkTime(Error *error,
                              const StringCallback &callback,
                              int timeout) = 0;

  virtual void set_network_time_changed_callback(
      const NetworkTimeChangedSignalCallback &callback) = 0;
};

}  // namespace mm1
}  // namespace shill

#endif  // SHILL_CELLULAR_MM1_MODEM_TIME_PROXY_INTERFACE_H_
